Field of the Invention
The invention relates to computer memory systems and particularly to System-on-Chip (SoC) memory systems using persistent memory that includes magnetic random access memory (MRAM).
Description of the Prior Art
Portable battery-back computing systems include but not limited to mobile phones, tablets, netbooks rely on the software stored in a read-only memory (ROM) coupled with other non-volatile memory and volatile memory devices to initialize the system boot process during power-on or reset.
The boot software including the bootROM, the boot loaders and the kernel is used to initialize and detect system hardware components such as processors, memory controllers, external random access memory (RAM) devices, mass storage devices, wireless modem, and other peripheral devices (keyboard, mouse etc. . . . ) during the power-on or reset process. The boot software may be stored in multi-non-volatile memory devices or a single non-volatile memory device such as but not limited to raw NAND Flash or ECC-integrated-NAND Flash, discrete component or NAND Flash based storage devices such as embedded multi-media card (eMMC) or secure digital (SD) card or universal serial bus (USB) drive. Each of the non-volatile memory devices can be either external or integrated into the system on chip (SoC), and are connected to the SoC via a eMMC or SD or USB interface or other types of internal system buses.
An example of the mobile SoC boot execution stages are as follows:                1. When a user pushes a mobile's or a tablet's power button or resets the device, the SoC starts executing the hard-wired, start-up software code in ROM. The start-up software code is typically called bootROM.        2. The bootROM software will then initialize and detect the external boot sources and decide from where it loads a series of the boot-loaders. These boot-loaders contain multi-stage executable software codes, and are designed to initialize and detect the SoC's hardware components such as baseband processor, I/O peripherals, memory controllers, audio and video components. These boot-loaders may reside in multiple external memory boot sources or a single memory boot source, depending on the default hardware configuration of the SoC's internal fuses or pin-strapping.        3. In order to execute the boot-loaders, the bootROM must first copy the boot-loaders to the SoC's external RAM such as but not limited to low power double data rate 2 (LPDDR2) or low power double data rate 3 (LPDDR3) device, and then execute the boot loaders from the external RAM.        4. Once the boot-loaders finish the hardware initialization, the boot-loaders will look for the kernel which typically resides in either a separate external or internal boot source or the same boot source that the boot loaders reside. The kernel is responsible for managing the SoC system's resources, serving as the bridge between the hardware and the OS, and can be either in the compressed format or raw format. The boot-loaders load the kernel into the SoC's external RAM memory, de-compress it and save the de-compressed kernel in the SoC's external RAM memory if required, and execute the kernel from the SoC's external RAM.        5. The SoC boot process is now complete.        
As the SoC boot process above describes, the boot loaders and the kernel software first have to be copied from external boot sources as described above to the SoC's external RAM and executed from the SoC's external RAM. The boot loaders and the kernel software cannot be executed from the external NAND Flash-based boot source(s) because the NAND Flash is a page oriented memory device and does not support execute-in-place (XIP) function.
These extra steps of reading the boot loaders and the kernel software from external boot sources, copying the software to the SoC's external RAM and then executing from the external RAM can slow down the boot process, resulting in reducing the battery life.
What is needed is an improved SoC system.